1. Field of the Invention
The present invention relates to the field of data processing. More specifically, embodiments of the present invention relate to the preservation of program state for multiple programs running on an electronic device, e.g., a computer system, a portable computer system, a palmtop computer system, or any other hand-held electronic device that utilizes a display screen, such as a cell phone, a pager, etc.
2. Related Art
As the components required to build a computer system have reduced in size, new categories of electronic devices and computer systems have emerged. One of the new categories of computer systems is the “palmtop” computer system. A palmtop computer system is a computer that is small enough to be held in the hand of a user and can therefore be “palm-sized.” Most palmtop computer systems are used to implement various Personal Information Management (PIM) applications such as an address book, a daily organizer (calendar, datebook, etc.) and electronic notepads, to name a few. Palmtop computers with PIM software have been known as Personal Digital Assistants (PDAs). Many PDAs have a small and flat display screen associated therewith.
In addition to PDAs, other portable electronic devices have display screens, such as cell phones, electronic pagers, remote control devices and other wireless portable devices. All of these devices have been adapted to display short lists of information on the display screens to help the user organize and display information, e.g., phone records.
User convenience is a very important factor for portable electronic devices. Typically, portable electronic devices are employed while the user is on the run, e.g., in business meetings, on business travel, personal travel, in a vehicle, on foot, etc. Because the user may be occupied or busy while using the portable electronic device, the number of user steps or user tasks required in order to access information from an electronic device (or to store information into the electronic device) is crucial for producing a commercially successful and useful product. That is, the more difficult it is to access data from an electronic device, the less likely the user will perform those tasks to obtain the information. Likewise, the easier information is to obtain, the more likely the portable electronic device will be used to obtain that information and the more likely the portable electronic device will become a part of the user's everyday activities.
One convenience factor for portable electronic devices relates to the ease of switching between application programs, hereinafter called task switching. For example, while using an email program, a user may receive an email message requesting him to confirm a proposed appointment, which requires the user to switch to a calendar program to check his availability. After checking his availability with the calendar program, the user needs to switch back to the email program to reply to the appointment-requesting email message.
Presently, users of palmtop computers perform a task switch by ending a first program (i.e., the first program terminates) and starting a second program. The problem with this mechanism is the inability to return to the first program at the point where the user left off. An alternate mechanism used on palmtop computers is to simply suspend operation of the first program, thereby providing a way to return to the point where the user left off. However, if the user swaps between many different programs, and each suspended program consumes more memory than when it is not running, then the palmtop computer's memory may be insufficient for all the programs. This is a particularly acute problem in palmtop computers because memory is a precious and limited resource.
A convenient feature for task switching currently incorporated into palmtop computers and telephones is the use of buttons. Buttons directly invoke a program, and can be either hardware pushbuttons on the device, areas on a touchscreen LCD with an icon, or a silk-screened area on a touchscreen. Hardware pushbuttons and silk screened area have the disadvantage of being limited in number, and generally correspond to a specific program included by the manufacturer at the factory. Hence, they are not expandable to include new programs. Also, examples currently in production cause the corresponding program to be started anew, thus losing the previous state the user had left for that program.
Presently, desktop and laptop computers perform a task switch by swapping between suspended programs or programs “in the background.” For example, a user can have several programs running, each in a different window of the computer's user interface. The user simple swaps to a different window to task switch. This mechanism is enhanced with a multi-tasking operating system, as suspended programs still receive processors cycles (and are “in the background”, rather than “suspended”). However, this mechanism is not well suited to palmtop or telephone applications due to the lack of a multitasking operating system, the lack of a windowed user interface, or a limited amount of memory.
In the early days of personal computers, there was a separate program, called a “switcher”, that would allow the user to suspend the operation of one computer program and make another program the currently running program. This generally entailed the copying of a suspended program to a different part of memory, thereby having the shortcoming of both the copying operation and the consumption of memory by the suspended program.
Web browsers have a form of task switching that is convenient: their “back” and “forward” buttons. This, however, is done with a list of URLs (Uniform Resource Locators), rather than a set of memory resident programs. Also, the browser allows random hopping between a set of URLs via a bookmark mechanism.